Virtualization allows computing tasks to be divided between different system resources for improved efficiency and for remote access to computing applications. Instead of requiring a separate computer for each user, a server can be configured to host multiple virtual machines each of which allows computing applications (e.g., software applications) to be accessed and operated by a user. These virtual machines allow users to remotely access computing applications via a network without requiring the applications to be installed on each user's computing device. For example, virtual desktops and virtual applications are stored and executed on a remote server rather than on each user's local computing device. Virtual desktops and virtual applications are increasingly used in certain industries, such as accounting because of reduced hardware and maintenance costs. Virtualization also provides increased resource redundancy in order to prevent data loss or loss of functionality when a portion of the system resources are shut down for maintenance.
Despite the benefits of virtualization, conventional virtualization technology has several limitations. Virtualization does not scale well for very large numbers of users. For example, most commonly used computing applications are configured as single-tenant applications such that only one user can access a single installation of the computing application at a given time. In order to host a single-tenant application using virtualization, a separate virtual machine is typically prepared for each and every user. An example of this approach is depicted in FIG. 1A in which each of users 105a-d access their own respective instance of applications 115a-d in a corresponding separate instance of guest operating system 120a-d. Thus, multiple instances of each computing application and multiple instances of the guest operating system (one for each user) must be installed on a single server, resulting in inefficient utilization of server resources and increased operating costs.
The few available alternative approaches to that shown in FIG. 1A include application streaming technology, but like the approach in FIG. 1A, this approach also suffers from loss of license integrity, limited functionality, and a lack of application support for customizations which each user might make or want to make. The functionality of a hosted virtual computing application can be limited compared to that of the same application when it is installed directly on a user's personal computing device. An application provided in a virtual desktop or as a virtual application often lacks the full set of features and customizations that a user might be accustomed to accessing when the application is installed and run directly on the user's computing device.
It is desirable for a hosted computing application to perform and “feel” as though it were locally installed and executed on the user's computing device. However, conventional approaches for hosting computing applications fall short of this goal. There is thus a need for improved systems and methods of hosting computing applications for efficient and reliable remote access by a plurality of user computing devices.